package object3;

/**
 * 类变量使用细节
 */
public class StaticDetail {

    public static void main(String[] args) {
        /*
            1)什么时候需要类变量：
              当需要让某个类的所有对象都共享一个变量时，就可以考虑使用类变量(静态变量)，比如统计所有学生共交多少钱
            2)类变量与实例变量(普通属性)区别
              类变量是该类的所有对象共享的，而实例变量是每个对象共享的
            3)加上static称为类变量或静态变量，否则称为实例变量/普通变量/非静态变量
            4)类变量可以通过 类名.类变量名 或者 对象名.类变量名来访问，但java设计者推荐使用 类名.类变量名 访问
            5)实例变量不能通过 类名.类变量名 方式访问
            6)类变量在类加载时就初始化了，也就是说即使没有创建对象，只要类加载了就可以使用类变量了
            7)类变量的生命周期是随类的加载开始，随着类的消亡而销毁
         */

        TestStaticDetail testStaticDetail = new TestStaticDetail();
        System.out.println(TestStaticDetail.n2);//200

        //静态变量是类加载时就创建了，所以没有创建实例对象也可以通过 类名.类变量名 来访问
        System.out.println(TestStaticDetail2.address);//北京
    }
}

class TestStaticDetail {

    public int n1 = 100;

    public static int n2 = 200;
}

class TestStaticDetail2 {

    public static String address = "北京";
}